package pe.com.bbva.ge.vista.vaadin.ui;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import pe.com.bbva.ge.domain.configuracion.Denominacion;
import pe.com.bbva.ge.domain.configuracion.Valor;
import pe.com.bbva.ge.domain.seguridad.Usuario;
import pe.com.bbva.ge.domain.solicitud.Destino;
import pe.com.bbva.ge.domain.solicitud.DetalleDenominacion;
import pe.com.bbva.ge.domain.solicitud.Remito;
import pe.com.bbva.ge.domain.solicitud.Solicitud;
import pe.com.bbva.ge.negocio.ConfiguracionNegocio;
import pe.com.bbva.ge.negocio.SolicitudNegocio;
import pe.com.bbva.ge.vista.vaadin.ui.component.ComboBoxDenominacion;
import pe.com.bbva.ge.vista.vaadin.ui.component.ComboBoxValor;
import pe.com.bbva.ge.vista.vaadin.ui.component.TxtNumerico;
import pe.com.bbva.ge.vista.vaadin.ui.utileria.bean.PropiedadesTxtNumerico;

import com.vaadin.annotations.AutoGenerated;
import com.vaadin.data.Item;
import com.vaadin.data.util.IndexedContainer;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
import com.vaadin.ui.Table;
import com.vaadin.ui.TextField;
import com.vaadin.ui.VerticalLayout;

public class RemitoUI extends VentanaUI implements ClickListener{

	@AutoGenerated
	private VerticalLayout mainLayout;
	@AutoGenerated
	private HorizontalLayout horizontalLayout_14;
	@AutoGenerated
	private HorizontalLayout horizontalLayout_16;
	@AutoGenerated
	private Button btnCerrar;
	@AutoGenerated
	private Button btnGuardar;
	@AutoGenerated
	private HorizontalLayout horizontalLayout_15;
	@AutoGenerated
	private AuditoriaUI auditoriaUI_1;
	@AutoGenerated
	private VerticalLayout verticalLayout_2;
	@AutoGenerated
	private HorizontalLayout horizontalLayout_10;
	@AutoGenerated
	private HorizontalLayout horizontalLayout_12;
	@AutoGenerated
	private TextField textField_13;
	@AutoGenerated
	private Label label_5;
	@AutoGenerated
	private TextField textField_12;
	@AutoGenerated
	private Label label_4;
	@AutoGenerated
	private HorizontalLayout horizontalLayout_11;
	@AutoGenerated
	private HorizontalLayout horizontalLayout_13;
	@AutoGenerated
	private Table tblRemitos;
	@AutoGenerated
	private HorizontalLayout horizontalLayout_3;
	@AutoGenerated
	private HorizontalLayout horizontalLayout_6;
	@AutoGenerated
	private TextField txtObservacion;
	@AutoGenerated
	private TextField txtMontoMaximo;
	@AutoGenerated
	private TextField txtCantidad;
	@AutoGenerated
	private TextField txtDenominacion;
	@AutoGenerated
	private TextField txtConcepto;
	@AutoGenerated
	private TextField txtTipoRemito;
	@AutoGenerated
	private TextField txtNroRemito;
	@AutoGenerated
	private HorizontalLayout horizontalLayout_5;
	@AutoGenerated
	private HorizontalLayout horizontalLayout_1;
	@AutoGenerated
	private HorizontalLayout horizontalLayout_7;
	@AutoGenerated
	private TextField txtMontoMinimo;
	@AutoGenerated
	private HorizontalLayout horizontalLayout_2;
	@AutoGenerated
	private HorizontalLayout horizontalLayout_4;
	@AutoGenerated
	private HorizontalLayout horizontalLayout_9;
	@AutoGenerated
	private Button btnAgregarRemito;
	@AutoGenerated
	private TextField txtFechaAtencion;
	@AutoGenerated
	private Label label_3;
	@AutoGenerated
	private TextField txtFechaSolicitud;
	@AutoGenerated
	private Label label_2;
	@AutoGenerated
	private TextField txtNroSolicitud;
	@AutoGenerated
	private Label label_1;
	@AutoGenerated
	private HorizontalLayout horizontalLayout_8;

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	private Integer itemIdNro = 0;

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
	
	private Solicitud solicitud;
	private Valor moneda;
	private List<Remito> listaRemitos;
	private Destino destino;
	private PropiedadesTxtNumerico propTxtNDecimales;
	private PropiedadesTxtNumerico propTxtNEnteros;
	
	@Autowired
	private SolicitudNegocio gestionarSolicitudNegocio;

	@Autowired
	private ConfiguracionNegocio genericoNegocio;
	/**
	 * The constructor should first build the main layout, set the
	 * composition root and then do any custom initialization.
	 *
	 * The constructor will not be automatically regenerated by the
	 * visual editor.
	 */
	public RemitoUI(Solicitud solicitud, Valor moneda) {
		buildMainLayout();
		setCompositionRoot(mainLayout);
		
		// TODO add user code here
		this.solicitud = solicitud;
		this.moneda = moneda;
	}

	public void postConstruccion()
	{
		this.propTxtNDecimales = new PropiedadesTxtNumerico();
		this.propTxtNDecimales.setEsDecimal(true);
		this.propTxtNEnteros = new PropiedadesTxtNumerico();
		this.propTxtNEnteros.setEsDecimal(false);
		
		IndexedContainer container = new IndexedContainer();
		container.addContainerProperty("item", Integer.class,  null);
		container.addContainerProperty("nroRemito", TextField.class,  null);
		container.addContainerProperty("tipoRemito", ComboBoxValor.class,  null);
		container.addContainerProperty("concepto", ComboBoxValor.class,  null);
		container.addContainerProperty("denominacion", ComboBoxDenominacion.class,  null);
		container.addContainerProperty("cantidad", TextField.class,  null);
		container.addContainerProperty("monto", TextField.class,  null);
		container.addContainerProperty("observacion", TextField.class,  null);
		container.addContainerProperty("acciones", Button.class,  null);
		tblRemitos.setContainerDataSource(container);
		
		tblRemitos.setColumnHeader("item", "Item");
		tblRemitos.setColumnHeader("nroRemito", "N° Remito");
		tblRemitos.setColumnHeader("tipoRemito", "Tipo Remito");
		tblRemitos.setColumnHeader("concepto", "Concepto");
		tblRemitos.setColumnHeader("denominacion", "Denominación");
		tblRemitos.setColumnHeader("cantidad", "Cantidad");
		tblRemitos.setColumnHeader("monto", "Monto");
		tblRemitos.setColumnHeader("observacion", "Observación");
		tblRemitos.setColumnHeader("acciones", "Acciones");
		
		tblRemitos.setColumnWidth("item", 40);
		tblRemitos.setColumnWidth("nroRemito", 75);
		tblRemitos.setColumnWidth("tipoRemito", 130);
		tblRemitos.setColumnWidth("concepto", 130);
		tblRemitos.setColumnWidth("denominacion", 130);
		tblRemitos.setColumnWidth("cantidad", 75);
		tblRemitos.setColumnWidth("monto", 75);
		tblRemitos.setColumnWidth("observacion", 140);
		tblRemitos.setColumnWidth("acciones", 60);
		
		btnAgregarRemito.addListener((ClickListener)this);
		btnGuardar.addListener((ClickListener)this);
		
		txtNroRemito.setInputPrompt("N° Remito");
		txtTipoRemito.setInputPrompt("Tipo Remito");
		txtConcepto.setInputPrompt("Concepto");
		txtDenominacion.setInputPrompt("Denominación");
		txtCantidad.setInputPrompt("Cantidad");
		txtMontoMinimo.setInputPrompt("Minimo");
		txtMontoMaximo.setInputPrompt("Maximo");
		txtObservacion.setInputPrompt("Observación");
		
		txtNroSolicitud.setValue(this.solicitud.getNumero());
		txtFechaSolicitud.setValue(this.solicitud.getCreacion().toString());
		txtFechaAtencion.setValue(this.solicitud.getAtencion().toString());
		this.destino = gestionarSolicitudNegocio.obtenerDestinos(this.solicitud).get(0);
		this.listaRemitos = gestionarSolicitudNegocio.obtenerRemitos(gestionarSolicitudNegocio.obtenerDetalleMonedaXIdMoneda(this.destino, this.moneda));
		
		itemIdNro = this.listaRemitos.size();
		
		int i = 1;
		
		for(Remito remito : this.listaRemitos)
		{
			//container = (IndexedContainer) tblRemitos.getContainerDataSource();
			
			Item item = container.addItem(i);
			item.getItemProperty("item").setValue(tblRemitos.getItemIds().size());
			
			ComboBoxValor cmbTipoRemito = new ComboBoxValor("TIPO-REMITO");
			cmbTipoRemito.setWidth("125");
			cmbTipoRemito.setInputPrompt("Seleccione");
			
			ComboBoxValor cmbConcepto = new ComboBoxValor("CONCEPTO-REMITO");
			cmbConcepto.setWidth("125");
			cmbConcepto.setInputPrompt("Seleccione");
			
			// FIXME Se debe controlar cuando la solicitud contenga varios destinos
			List<DetalleDenominacion> listaDetalleDenominacion = gestionarSolicitudNegocio.obtenerDetalleDenominaciones(
																		gestionarSolicitudNegocio.obtenerDetalleMonedaXIdMoneda(this.destino, this.moneda));
			List<Denominacion> listaDenominaciones = new ArrayList<Denominacion>();
			
			for(DetalleDenominacion detalleDenominacion : listaDetalleDenominacion)
			{
				listaDenominaciones.add(detalleDenominacion.getDenominacion());
			}
			
			ComboBoxDenominacion cmbDenominacion = new ComboBoxDenominacion(listaDenominaciones);
			cmbDenominacion.setWidth("125");
			cmbDenominacion.setInputPrompt("Seleccione");
			
			TextField txtNroRemito = new TextField();
			TxtNumerico txtCantidad = new TxtNumerico("", this.propTxtNEnteros);
			TxtNumerico txtMonto = new TxtNumerico("", this.propTxtNDecimales);
			TextField txtObservacion = new TextField();
			txtNroRemito.setWidth("75");
			txtCantidad.setWidth("75");
			txtMonto.setWidth("75");
			txtObservacion.setWidth("140");
			
			final  Button btnAcciones = new Button();
			btnAcciones.setData(itemIdNro);
			btnAcciones.setCaption("X");
			item.getItemProperty("acciones").setValue(btnAcciones);
			
			tblRemitos.setContainerDataSource(container);
			
			
			btnAcciones.addListener(new ClickListener() {
				@Override
				public void buttonClick(ClickEvent event) {
					
					Object itemId = btnAcciones.getData();
					quitarRemito(itemId);				
				}
			});
			
			txtNroRemito.setValue(remito.getNumero());
			cmbTipoRemito.setValue(remito.getTipo());
			//cmbConcepto.setValue(remito.getConcepto());
			//cmbDenominación.setValue(remito.getDenominacion());
			//txtCantidad.setValue(String.valueOf(remito.getCantidad()));
			//BigDecimal cantidad = BigDecimal.valueOf(remito.getCantidad());
			//txtMonto.setValue(remito.getDenominacion().getValor().multiply(cantidad));
			//txtObservacion.setValue(remito.getObservacion());

			item.getItemProperty("nroRemito").setValue(txtNroRemito);
			item.getItemProperty("tipoRemito").setValue(cmbTipoRemito);
			item.getItemProperty("concepto").setValue(cmbConcepto);
			item.getItemProperty("denominacion").setValue(cmbDenominacion);
			item.getItemProperty("cantidad").setValue(txtCantidad);
			item.getItemProperty("monto").setValue(txtMonto);
			item.getItemProperty("observacion").setValue(txtObservacion);
			item.getItemProperty("acciones").setValue(btnAcciones);
			
			i++;
		}
		
		//mainLayout.setHeight(String.valueOf(mainLayout.getHeight() + 80));
	}
	
	private void agregarRemito()
	{
		IndexedContainer container = (IndexedContainer) tblRemitos.getContainerDataSource();
		itemIdNro++;
		Item item = container.addItem(itemIdNro);
		item.getItemProperty("item").setValue(tblRemitos.getItemIds().size());
		
		ComboBoxValor cmbTipoRemito = new ComboBoxValor("TIPO-REMITO");
		cmbTipoRemito.setWidth("125");
		cmbTipoRemito.setInputPrompt("Seleccione");
		
		ComboBoxValor cmbConcepto = new ComboBoxValor("CONCEPTO-REMITO");
		cmbConcepto.setWidth("125");
		cmbConcepto.setInputPrompt("Seleccione");
		
		// FIXME Se debe controlar cuando la solicitud contenga varios destinos
		List<DetalleDenominacion> listaDetalleDenominacion = gestionarSolicitudNegocio.obtenerDetalleDenominaciones(
																	gestionarSolicitudNegocio.obtenerDetalleMonedaXIdMoneda(this.destino, this.moneda));
		List<Denominacion> listaDenominaciones = new ArrayList<Denominacion>();
		
		for(DetalleDenominacion detalleDenominacion : listaDetalleDenominacion)
		{
			listaDenominaciones.add(detalleDenominacion.getDenominacion());
		}
		
		ComboBoxDenominacion cmbDenominacion = new ComboBoxDenominacion(listaDenominaciones);
		cmbDenominacion.setWidth("125");
		cmbDenominacion.setInputPrompt("Seleccione");

		TextField txtNroRemito = new TextField();
		TxtNumerico txtCantidad = new TxtNumerico("", this.propTxtNEnteros);
		TxtNumerico txtMonto = new TxtNumerico("", this.propTxtNDecimales);
		TextField txtObservacion = new TextField();
		txtNroRemito.setWidth("75");
		txtCantidad.setWidth("75");
		txtMonto.setWidth("75");
		txtObservacion.setWidth("140");

		item.getItemProperty("nroRemito").setValue(txtNroRemito);
		item.getItemProperty("tipoRemito").setValue(cmbTipoRemito);
		item.getItemProperty("concepto").setValue(cmbConcepto);
		item.getItemProperty("denominacion").setValue(cmbDenominacion);
		item.getItemProperty("cantidad").setValue(txtCantidad);
		item.getItemProperty("monto").setValue(txtMonto);
		item.getItemProperty("observacion").setValue(txtObservacion);
		
		final  Button btnAcciones = new Button();
		btnAcciones.setData(itemIdNro);
		btnAcciones.setCaption("X");
		item.getItemProperty("acciones").setValue(btnAcciones);
		
		tblRemitos.setContainerDataSource(container);
		
		
		btnAcciones.addListener(new ClickListener() {
			@Override
			public void buttonClick(ClickEvent event) {
				
				Object itemId = btnAcciones.getData();
				quitarRemito(itemId);				
			}
		});
	}
	
	@Override
	public void buttonClick(ClickEvent event) {
		if(event.getButton().equals(btnAgregarRemito))
		{
			agregarRemito();		
		}
		
		if(event.getButton().equals(btnGuardar))
		{
			guardarRemitos();		
		}
	}
	
	private void guardarRemitos()
	{
		for(Object itemId : tblRemitos.getItemIds())
		{
			Item item = tblRemitos.getItem(itemId);
			Remito remito = new Remito();
			//Usuario creador = genericoNegocio.obtener(1l, Usuario.class);
			
			TextField txtNroRemito = (TextField) item.getItemProperty("nroRemito").getValue();
			ComboBoxValor cmbTipoRemito = (ComboBoxValor) item.getItemProperty("tipoRemito").getValue();
			ComboBoxValor cmbConcepto = (ComboBoxValor) item.getItemProperty("concepto").getValue();
			ComboBoxDenominacion cmbDenominacion = (ComboBoxDenominacion) item.getItemProperty("denominacion").getValue();
			TextField txtCantidad = (TextField) item.getItemProperty("cantidad").getValue();
			//TextField txtMonto = (TextField) item.getItemProperty("monto").getValue();
			TextField txtObservacion = (TextField) item.getItemProperty("observacion").getValue();
			
			//remito.setId(1001 + gestionarSolicitudNegocio.contar(Remito.class));
			//remito.setDetalleMoneda(gestionarSolicitudNegocio.obtenerDetalleMonedaXIdMoneda(this.destino, this.moneda));
			remito.setNumero(txtNroRemito.getValue().toString());
			remito.setTipo(cmbTipoRemito.obtenerValor());
			///remito.setConcepto(cmbConcepto.obtenerValor());
			//remito.setDenominacion(cmbDenominacion.obtenerDenominacion());
			//remito.setCantidad(Integer.valueOf(txtCantidad.getValue().toString()));
			//remito.setObservacion(txtObservacion.getValue().toString());
			//remito.setCreador(creador);
			//remito.setCreacion(new Date());
			
			gestionarSolicitudNegocio.crear(remito);
		}
	}
	
	private void quitarRemito(Object itemId)
	{
		tblRemitos.removeItem(itemId);
		
		int i = 1;
		for (Object itemIdN : tblRemitos.getItemIds()) {
			Item item = tblRemitos.getItem(itemIdN);
			item.getItemProperty("item").setValue(i++);
		}
	}
	
	@AutoGenerated
	private VerticalLayout buildMainLayout() {
		// common part: create layout
		mainLayout = new VerticalLayout();
		mainLayout.setImmediate(false);
		mainLayout.setWidth("995px");
		mainLayout.setHeight("-1px");
		mainLayout.setMargin(false);
		
		// top-level component properties
		setWidth("995px");
		setHeight("-1px");
		
		// horizontalLayout_4
		horizontalLayout_4 = buildHorizontalLayout_4();
		mainLayout.addComponent(horizontalLayout_4);
		
		// verticalLayout_2
		verticalLayout_2 = buildVerticalLayout_2();
		mainLayout.addComponent(verticalLayout_2);
		mainLayout.setExpandRatio(verticalLayout_2, 1.0f);
		
		// auditoriaUI_1
		auditoriaUI_1 = new AuditoriaUI();
		auditoriaUI_1.setImmediate(false);
		auditoriaUI_1.setWidth("-1px");
		auditoriaUI_1.setHeight("-1px");
		mainLayout.addComponent(auditoriaUI_1);
		
		// horizontalLayout_14
		horizontalLayout_14 = buildHorizontalLayout_14();
		mainLayout.addComponent(horizontalLayout_14);
		
		return mainLayout;
	}

	@AutoGenerated
	private HorizontalLayout buildHorizontalLayout_4() {
		// common part: create layout
		horizontalLayout_4 = new HorizontalLayout();
		horizontalLayout_4.setImmediate(false);
		horizontalLayout_4.setWidth("100.0%");
		horizontalLayout_4.setHeight("36px");
		horizontalLayout_4.setMargin(false);
		
		// horizontalLayout_8
		horizontalLayout_8 = new HorizontalLayout();
		horizontalLayout_8.setImmediate(false);
		horizontalLayout_8.setWidth("53px");
		horizontalLayout_8.setHeight("-1px");
		horizontalLayout_8.setMargin(false);
		horizontalLayout_4.addComponent(horizontalLayout_8);
		
		// label_1
		label_1 = new Label();
		label_1.setImmediate(false);
		label_1.setWidth("-1px");
		label_1.setHeight("-1px");
		label_1.setValue("N° Solicitud:");
		horizontalLayout_4.addComponent(label_1);
		
		// txtNroSolicitud
		txtNroSolicitud = new TextField();
		txtNroSolicitud.setImmediate(false);
		txtNroSolicitud.setWidth("200px");
		txtNroSolicitud.setHeight("-1px");
		horizontalLayout_4.addComponent(txtNroSolicitud);
		
		// label_2
		label_2 = new Label();
		label_2.setImmediate(false);
		label_2.setWidth("-1px");
		label_2.setHeight("-1px");
		label_2.setValue("Fecha de Solicitud:");
		horizontalLayout_4.addComponent(label_2);
		
		// txtFechaSolicitud
		txtFechaSolicitud = new TextField();
		txtFechaSolicitud.setImmediate(false);
		txtFechaSolicitud.setWidth("100px");
		txtFechaSolicitud.setHeight("-1px");
		horizontalLayout_4.addComponent(txtFechaSolicitud);
		
		// label_3
		label_3 = new Label();
		label_3.setImmediate(false);
		label_3.setWidth("-1px");
		label_3.setHeight("-1px");
		label_3.setValue("Fecha de Atención:");
		horizontalLayout_4.addComponent(label_3);
		
		// txtFechaAtencion
		txtFechaAtencion = new TextField();
		txtFechaAtencion.setImmediate(false);
		txtFechaAtencion.setWidth("100px");
		txtFechaAtencion.setHeight("-1px");
		horizontalLayout_4.addComponent(txtFechaAtencion);
		
		// btnAgregarRemito
		btnAgregarRemito = new Button();
		btnAgregarRemito.setCaption("+ Agregar Remito");
		btnAgregarRemito.setImmediate(true);
		btnAgregarRemito.setWidth("-1px");
		btnAgregarRemito.setHeight("-1px");
		horizontalLayout_4.addComponent(btnAgregarRemito);
		
		// horizontalLayout_9
		horizontalLayout_9 = new HorizontalLayout();
		horizontalLayout_9.setImmediate(false);
		horizontalLayout_9.setWidth("40px");
		horizontalLayout_9.setHeight("-1px");
		horizontalLayout_9.setMargin(false);
		horizontalLayout_4.addComponent(horizontalLayout_9);
		
		return horizontalLayout_4;
	}

	@AutoGenerated
	private VerticalLayout buildVerticalLayout_2() {
		// common part: create layout
		verticalLayout_2 = new VerticalLayout();
		verticalLayout_2.setImmediate(false);
		verticalLayout_2.setWidth("100.0%");
		verticalLayout_2.setHeight("280px");
		verticalLayout_2.setMargin(false);
		
		// horizontalLayout_1
		horizontalLayout_1 = buildHorizontalLayout_1();
		verticalLayout_2.addComponent(horizontalLayout_1);
		
		// horizontalLayout_3
		horizontalLayout_3 = buildHorizontalLayout_3();
		verticalLayout_2.addComponent(horizontalLayout_3);
		verticalLayout_2.setExpandRatio(horizontalLayout_3, 1.0f);
		
		// horizontalLayout_13
		horizontalLayout_13 = buildHorizontalLayout_13();
		verticalLayout_2.addComponent(horizontalLayout_13);
		verticalLayout_2.setExpandRatio(horizontalLayout_13, 1.0f);
		
		// horizontalLayout_10
		horizontalLayout_10 = buildHorizontalLayout_10();
		verticalLayout_2.addComponent(horizontalLayout_10);
		
		return verticalLayout_2;
	}

	@AutoGenerated
	private HorizontalLayout buildHorizontalLayout_1() {
		// common part: create layout
		horizontalLayout_1 = new HorizontalLayout();
		horizontalLayout_1.setImmediate(false);
		horizontalLayout_1.setWidth("100.0%");
		horizontalLayout_1.setHeight("26px");
		horizontalLayout_1.setMargin(false);
		
		// horizontalLayout_2
		horizontalLayout_2 = new HorizontalLayout();
		horizontalLayout_2.setImmediate(false);
		horizontalLayout_2.setWidth("657px");
		horizontalLayout_2.setHeight("-1px");
		horizontalLayout_2.setMargin(false);
		horizontalLayout_1.addComponent(horizontalLayout_2);
		
		// txtMontoMinimo
		txtMontoMinimo = new TextField();
		txtMontoMinimo.setImmediate(false);
		txtMontoMinimo.setWidth("89px");
		txtMontoMinimo.setHeight("-1px");
		horizontalLayout_1.addComponent(txtMontoMinimo);
		
		// horizontalLayout_7
		horizontalLayout_7 = new HorizontalLayout();
		horizontalLayout_7.setImmediate(false);
		horizontalLayout_7.setWidth("247px");
		horizontalLayout_7.setHeight("-1px");
		horizontalLayout_7.setMargin(false);
		horizontalLayout_1.addComponent(horizontalLayout_7);
		
		return horizontalLayout_1;
	}

	@AutoGenerated
	private HorizontalLayout buildHorizontalLayout_3() {
		// common part: create layout
		horizontalLayout_3 = new HorizontalLayout();
		horizontalLayout_3.setImmediate(false);
		horizontalLayout_3.setWidth("100.0%");
		horizontalLayout_3.setHeight("26px");
		horizontalLayout_3.setMargin(false);
		
		// horizontalLayout_5
		horizontalLayout_5 = new HorizontalLayout();
		horizontalLayout_5.setImmediate(false);
		horizontalLayout_5.setWidth("53px");
		horizontalLayout_5.setHeight("-1px");
		horizontalLayout_5.setMargin(false);
		horizontalLayout_3.addComponent(horizontalLayout_5);
		
		// txtNroRemito
		txtNroRemito = new TextField();
		txtNroRemito.setImmediate(false);
		txtNroRemito.setWidth("89px");
		txtNroRemito.setHeight("-1px");
		horizontalLayout_3.addComponent(txtNroRemito);
		
		// txtTipoRemito
		txtTipoRemito = new TextField();
		txtTipoRemito.setImmediate(false);
		txtTipoRemito.setWidth("143px");
		txtTipoRemito.setHeight("-1px");
		horizontalLayout_3.addComponent(txtTipoRemito);
		
		// txtConcepto
		txtConcepto = new TextField();
		txtConcepto.setImmediate(false);
		txtConcepto.setWidth("143px");
		txtConcepto.setHeight("-1px");
		horizontalLayout_3.addComponent(txtConcepto);
		
		// txtDenominacion
		txtDenominacion = new TextField();
		txtDenominacion.setImmediate(false);
		txtDenominacion.setWidth("143px");
		txtDenominacion.setHeight("-1px");
		horizontalLayout_3.addComponent(txtDenominacion);
		
		// txtCantidad
		txtCantidad = new TextField();
		txtCantidad.setImmediate(false);
		txtCantidad.setWidth("87px");
		txtCantidad.setHeight("-1px");
		horizontalLayout_3.addComponent(txtCantidad);
		
		// txtMontoMaximo
		txtMontoMaximo = new TextField();
		txtMontoMaximo.setImmediate(false);
		txtMontoMaximo.setWidth("89px");
		txtMontoMaximo.setHeight("-1px");
		horizontalLayout_3.addComponent(txtMontoMaximo);
		
		// txtObservacion
		txtObservacion = new TextField();
		txtObservacion.setImmediate(false);
		txtObservacion.setWidth("153px");
		txtObservacion.setHeight("-1px");
		horizontalLayout_3.addComponent(txtObservacion);
		
		// horizontalLayout_6
		horizontalLayout_6 = new HorizontalLayout();
		horizontalLayout_6.setImmediate(false);
		horizontalLayout_6.setWidth("96px");
		horizontalLayout_6.setHeight("-1px");
		horizontalLayout_6.setMargin(false);
		horizontalLayout_3.addComponent(horizontalLayout_6);
		
		return horizontalLayout_3;
	}

	@AutoGenerated
	private HorizontalLayout buildHorizontalLayout_13() {
		// common part: create layout
		horizontalLayout_13 = new HorizontalLayout();
		horizontalLayout_13.setImmediate(false);
		horizontalLayout_13.setWidth("100.0%");
		horizontalLayout_13.setHeight("202px");
		horizontalLayout_13.setMargin(false);
		
		// tblRemitos
		tblRemitos = new Table();
		tblRemitos.setImmediate(false);
		tblRemitos.setWidth("990px");
		tblRemitos.setHeight("200px");
		horizontalLayout_13.addComponent(tblRemitos);
		
		return horizontalLayout_13;
	}

	@AutoGenerated
	private HorizontalLayout buildHorizontalLayout_10() {
		// common part: create layout
		horizontalLayout_10 = new HorizontalLayout();
		horizontalLayout_10.setImmediate(false);
		horizontalLayout_10.setWidth("100.0%");
		horizontalLayout_10.setHeight("26px");
		horizontalLayout_10.setMargin(false);
		
		// horizontalLayout_11
		horizontalLayout_11 = new HorizontalLayout();
		horizontalLayout_11.setImmediate(false);
		horizontalLayout_11.setWidth("411px");
		horizontalLayout_11.setHeight("26px");
		horizontalLayout_11.setMargin(false);
		horizontalLayout_10.addComponent(horizontalLayout_11);
		
		// label_4
		label_4 = new Label();
		label_4.setImmediate(false);
		label_4.setWidth("-1px");
		label_4.setHeight("-1px");
		label_4.setValue("Total Cantidad:");
		horizontalLayout_10.addComponent(label_4);
		
		// textField_12
		textField_12 = new TextField();
		textField_12.setImmediate(false);
		textField_12.setWidth("170px");
		textField_12.setHeight("-1px");
		horizontalLayout_10.addComponent(textField_12);
		
		// label_5
		label_5 = new Label();
		label_5.setImmediate(false);
		label_5.setWidth("-1px");
		label_5.setHeight("-1px");
		label_5.setValue("Total Monto:");
		horizontalLayout_10.addComponent(label_5);
		
		// textField_13
		textField_13 = new TextField();
		textField_13.setImmediate(false);
		textField_13.setWidth("170px");
		textField_13.setHeight("-1px");
		horizontalLayout_10.addComponent(textField_13);
		
		// horizontalLayout_12
		horizontalLayout_12 = new HorizontalLayout();
		horizontalLayout_12.setImmediate(false);
		horizontalLayout_12.setWidth("40px");
		horizontalLayout_12.setHeight("26px");
		horizontalLayout_12.setMargin(false);
		horizontalLayout_10.addComponent(horizontalLayout_12);
		
		return horizontalLayout_10;
	}

	@AutoGenerated
	private HorizontalLayout buildHorizontalLayout_14() {
		// common part: create layout
		horizontalLayout_14 = new HorizontalLayout();
		horizontalLayout_14.setImmediate(false);
		horizontalLayout_14.setWidth("100.0%");
		horizontalLayout_14.setHeight("-1px");
		horizontalLayout_14.setMargin(false);
		
		// horizontalLayout_15
		horizontalLayout_15 = new HorizontalLayout();
		horizontalLayout_15.setImmediate(false);
		horizontalLayout_15.setWidth("777px");
		horizontalLayout_15.setHeight("-1px");
		horizontalLayout_15.setMargin(false);
		horizontalLayout_14.addComponent(horizontalLayout_15);
		
		// horizontalLayout_16
		horizontalLayout_16 = buildHorizontalLayout_16();
		horizontalLayout_14.addComponent(horizontalLayout_16);
		
		return horizontalLayout_14;
	}

	@AutoGenerated
	private HorizontalLayout buildHorizontalLayout_16() {
		// common part: create layout
		horizontalLayout_16 = new HorizontalLayout();
		horizontalLayout_16.setImmediate(false);
		horizontalLayout_16.setWidth("182px");
		horizontalLayout_16.setHeight("-1px");
		horizontalLayout_16.setMargin(false);
		
		// btnGuardar
		btnGuardar = new Button();
		btnGuardar.setCaption("Guardar");
		btnGuardar.setImmediate(true);
		btnGuardar.setWidth("-1px");
		btnGuardar.setHeight("-1px");
		horizontalLayout_16.addComponent(btnGuardar);
		horizontalLayout_16
				.setComponentAlignment(btnGuardar, new Alignment(48));
		
		// btnCerrar
		btnCerrar = new Button();
		btnCerrar.setCaption("Cerrar");
		btnCerrar.setImmediate(true);
		btnCerrar.setWidth("-1px");
		btnCerrar.setHeight("-1px");
		horizontalLayout_16.addComponent(btnCerrar);
		horizontalLayout_16.setComponentAlignment(btnCerrar, new Alignment(48));
		
		return horizontalLayout_16;
	}

}
